

#ifndef ALGORITHMS_ROUTE_ROUTE_H_
#define ALGORITHMS_ROUTE_ROUTE_H_

#include "ib_cluster/base/ai_sim.h"
#include "ib_cluster/route/topology.h"
#include "ib_cluster/network_module/control/TopoManager.h"

namespace ai_sim {

class RouteAlgorithm {
 public:
    virtual void generateRoutes(taskboard&, TopoManager *) = 0;
    bool selectInMachine(omnetpp::cModule*, void*);
    static RouteAlgorithm* get(ClusterType type);
    virtual ~RouteAlgorithm(){}
};

class RoceClusterRouteAlgorithm : public RouteAlgorithm {
 public:
    void generateRoutes(taskboard&, TopoManager * topos);
};

class IBClusterRouteAlgorithm : public RouteAlgorithm {
 public:
    void generateRoutes(taskboard&, TopoManager * topos);
};
}  // namespace ai_sim
#endif  // ALGORITHMS_ROUTE_ROUTE_H_